home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / bn_menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  10.2 KB  |  414 lines

  1. /*****************************************************************************
  2.   FILE           : bn_menu.c
  3.   SHORTNAME      : bn_menu
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : Creates the BIGNET-window. 
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Kai-Uwe Herrmann
  10.   DATE           : 15.1.1993
  11.  
  12.   CHANGED BY     : 
  13.   IDENTIFICATION : @(#)bn_menu.c    1.17 3/2/94
  14.   SCCS VERSION   : 1.17
  15.   LAST CHANGE    : 3/2/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20.  
  21.  
  22.  
  23. #include <stdlib.h>
  24. #include <stdio.h>
  25. #include <X11/Xlib.h>
  26. #include <X11/Xutil.h>
  27. #include <X11/Xos.h>
  28. #include <X11/cursorfont.h>
  29. #include <X11/Intrinsic.h>
  30. #include <X11/StringDefs.h>
  31. #include <X11/Shell.h>
  32. #include <X11/Xaw/Box.h>
  33. #include <X11/Xaw/Simple.h>
  34. #include <X11/Xaw/Grip.h>
  35. #include <X11/Xaw/Form.h>
  36. #include <X11/Xaw/SmeBSB.h>
  37. #include <X11/Xaw/SmeLine.h>
  38. #include <X11/Xaw/Viewport.h>
  39. #include <X11/Xaw/Label.h>
  40. #include <X11/Xaw/Toggle.h>
  41. #include <X11/Xaw/Command.h>
  42. #include <X11/Xaw/Cardinals.h>
  43. #include <X11/Xaw/AsciiText.h>
  44. #include <X11/Xaw/Scrollbar.h>
  45.  
  46. #include "ui.h"
  47. #include "glob_typ.h"
  48. #include "kr_ui.h"
  49. #include "ui_mainP.h"
  50. #include "ui_confirmer.h"
  51. #include "ui_textP.h"
  52. #include "ui_utilP.h"
  53. #include "ui_netUpdate.h"
  54. #include "ui_status.h"
  55. #include "ui_xWidgets.h"
  56. #include "ui_fileP.h"
  57. #include "ui_display.h"
  58. #include "ui_event.h"
  59. #include "ui_selection.h"
  60.  
  61. #include "bn_basics.h"
  62. #include "bn_bignet.h"
  63. #include "bn_TD_bignet.h"
  64. #include "bn_art1.h"
  65. #include "bn_art2.h"
  66. #include "bn_artmap.h"
  67. #include "bn_kohonen.h"
  68. #include "bn_bighop.h"
  69. #include "bn_JordElm.h"
  70. #include "bn_assoz.h"
  71.  
  72. #include "bn_menu.ph"
  73.  
  74.  
  75.  
  76.  
  77.  
  78. /*****************************************************************************
  79.   FUNCTION : bn_menu_exit
  80.  
  81.   PURPOSE  : Callback function for Feed Forward button
  82.   NOTES    :
  83.  
  84.   UPDATE   : 20.1.1993
  85. ******************************************************************************/
  86.  
  87. static void bn_menu_exit (void)
  88.  
  89. {
  90.    XtDestroyWidget (baseWidget);
  91.    bn_menu_open = 0;
  92. }
  93.  
  94.  
  95. /*****************************************************************************
  96.   FUNCTION : bn_menu_ff_PROC
  97.  
  98.   PURPOSE  : Callback function for Feed Forward button
  99.   NOTES    :
  100.  
  101.   UPDATE   : 20.1.1993
  102. ******************************************************************************/
  103.  
  104. static void bn_menu_ff_PROC (void)
  105.  
  106. {
  107.  
  108.    bn_menu_exit();
  109.  
  110.    bn_createBignet(); /* call feed forward bignet */
  111.  
  112. }
  113.  
  114.  
  115. /*****************************************************************************
  116.   FUNCTION : bn_menu_td_PROC
  117.  
  118.   PURPOSE  : Callback function for Time Delay button
  119.   NOTES    :
  120.  
  121.   UPDATE   : 20.1.1993
  122. ******************************************************************************/
  123.  
  124. static void bn_menu_td_PROC (void)
  125.  
  126. {
  127.  
  128.    bn_menu_exit();
  129.    bn_create_TD_Bignet(); /* call Time Delay bignet */
  130.  
  131. }
  132.  
  133.  
  134. /*****************************************************************************
  135.   FUNCTION : bn_menu_art1_PROC
  136.  
  137.   PURPOSE  : Callback function for art1 button
  138.   NOTES    :
  139.  
  140.   UPDATE   : 20.1.1993
  141. ******************************************************************************/
  142.  
  143. static void bn_menu_art1_PROC (void)
  144.  
  145. {
  146.    bn_menu_exit();
  147.    bn_createART1(); /* call ART1 bignet */
  148. }
  149.  
  150.  
  151. /*****************************************************************************
  152.   FUNCTION : bn_menu_art2_PROC
  153.  
  154.   PURPOSE  : Callback function for art2 button
  155.   NOTES    :
  156.  
  157.   UPDATE   : 20.1.1993
  158. ******************************************************************************/
  159.  
  160. static void bn_menu_art2_PROC (void)
  161.  
  162. {
  163.    bn_menu_exit();
  164.    bn_createART2(); /* call ART2 bignet */
  165. }
  166.  
  167.  
  168. /*****************************************************************************
  169.   FUNCTION : bn_menu_artmap_PROC
  170.  
  171.   PURPOSE  : Callback function for artmap button
  172.   NOTES    :
  173.  
  174.   UPDATE   : 20.1.1993
  175. ******************************************************************************/
  176.  
  177. static void bn_menu_artmap_PROC (void)
  178.  
  179. {
  180.    bn_menu_exit();
  181.    bn_createARTMAP(); /* call ARTMAP bignet */
  182. }
  183.  
  184. /*****************************************************************************
  185.   FUNCTION : bn_menu_bighop_PROC
  186.  
  187.   PURPOSE  : Callback function for Hopfield button
  188.   NOTES    :
  189.  
  190.   UPDATE   : 27.5.1993
  191. ******************************************************************************/
  192.  
  193. static void bn_menu_bighop_PROC (void)
  194.  
  195. {
  196.    bn_menu_exit();
  197.    bn_createBigHop(); /* call Hopfield bignet */
  198. }
  199.  
  200. /*****************************************************************************
  201.   FUNCTION : bn_menu_kohonen_PROC
  202.  
  203.   PURPOSE  : Callback function for kohonen button
  204.   NOTES    :
  205.  
  206.   UPDATE   : 
  207. ******************************************************************************/
  208.  
  209. static void bn_menu_kohonen_PROC (void)
  210.  
  211. {
  212.    bn_menu_exit();
  213.    bn_createKOHONEN();      /* call KOHONEN bignet */
  214. }
  215.  
  216.  
  217.  
  218. /*****************************************************************************
  219.   FUNCTION : bn_menu_jordan_PROC
  220.  
  221.   PURPOSE  : Callback function for jordan button
  222.   NOTES    :
  223.  
  224.   UPDATE   :
  225. ******************************************************************************/
  226.  
  227. static void bn_menu_jordan_PROC (void)
  228.  
  229. {
  230.    bn_menu_exit () ;
  231.    bn_create_jordan () ; /* call BigNet (Jordan) */
  232. }
  233.  
  234.  
  235. /*****************************************************************************
  236.   FUNCTION : bn_menu_elman_PROC
  237.  
  238.   PURPOSE  : Callback function for elman button
  239.   NOTES    :
  240.  
  241.   UPDATE   : 
  242. ******************************************************************************/
  243.  
  244. static void bn_menu_elman_PROC (void)
  245.  
  246. {
  247.    bn_menu_exit () ;
  248.    bn_create_elman () ; /* call BigNet (Elman) */
  249. }
  250.  
  251.  
  252.  
  253. /*****************************************************************************
  254.   FUNCTION : bn_menu_assoz_PROC
  255.  
  256.   PURPOSE  : Callback function for elman button
  257.   NOTES    :
  258.  
  259.   UPDATE   : 
  260. ******************************************************************************/
  261. static void bn_menu_assoz_PROC (void)
  262.  
  263. {
  264.    bn_menu_exit () ;
  265.    bn_create_assoz () ; /* call BigNet (autoassozative) */
  266. }
  267.  
  268.  
  269.  
  270. /*****************************************************************************
  271.   FUNCTION : bn_menu_cancel_PROC
  272.  
  273.   PURPOSE  : Callback function for cancel button
  274.   NOTES    :
  275.  
  276.   UPDATE   : 20.1.1993
  277. ******************************************************************************/
  278.  
  279. static void bn_menu_cancel_PROC (void)
  280.  
  281. {
  282.  
  283.    bn_menu_exit();
  284. }
  285.  
  286.  
  287.  
  288. /*****************************************************************************
  289.   FUNCTION : bn_BignetMenu
  290.  
  291.   PURPOSE  : create Bignet Selection Menu
  292.   NOTES    : GUIButton has to be passed as parameter to find correct position
  293.              for Bignet Menu Shell.
  294.  
  295.   UPDATE   : 19.1.1993
  296. ******************************************************************************/
  297.  
  298. void bn_BignetMenu (Widget w, XtPointer client_data, XtPointer call_data)
  299.  
  300. {
  301.     Widget      bnmenubox, button, GUIButton;
  302.     Arg        args[10];
  303.     Cardinal    n = 0;
  304.     char        buf[40];
  305.     Dimension   GUIheight;
  306.     Position    GUIx;
  307.     Position    bn_menu_x, bn_menu_y;
  308.  
  309.     GUIButton = (Widget) client_data;
  310.  
  311.     if ( ! bn_menu_open) {
  312.  
  313.  
  314.        /* get coordinates and height of GUI-Button */
  315.  
  316.        n = 0;
  317.        XtSetArg(args[n],XtNx, &GUIx); n++;
  318.        XtSetArg(args[n],XtNheight, &GUIheight); n++;
  319.  
  320.        XtGetValues (GUIButton, args, n);
  321.  
  322.  
  323.        /* compute position of BigNet-Menu-Shell, which should be
  324.           slightly below and slightly left of GUI Button
  325.        */
  326.        XtTranslateCoords (GUIButton,
  327.                           (Position) ((int) GUIx - 15),
  328.                           (Position) ((int) GUIheight + 2),
  329.                           &bn_menu_x, &bn_menu_y);
  330.  
  331.        sprintf (buf, "BigNet");
  332.  
  333.        n = 0;
  334. /*
  335.        XtSetArg(args[n],XtNminHeight,114); n++;
  336.        XtSetArg(args[n],XtNminWidth,95); n++;  
  337.        XtSetArg(args[n],XtNmaxHeight,114); n++;
  338.        XtSetArg(args[n],XtNmaxWidth,95); n++;
  339. */
  340.        XtSetArg(args[n],XtNx,bn_menu_x); n++;
  341.        XtSetArg(args[n],XtNy,bn_menu_y); n++;
  342.        
  343.  
  344.        baseWidget = 
  345.         XtCreatePopupShell(buf, transientShellWidgetClass, ui_toplevel,
  346.                            args, n);
  347.  
  348.  
  349.        bnmenubox = XtCreateManagedWidget ("form", formWidgetClass, baseWidget,
  350.                                       args, n);
  351.  
  352.     
  353.        button = 
  354.        bn_basics_xCreateButtonItem("feed_forward",bnmenubox, NULL, NULL);
  355.        XtAddCallback(button, XtNcallback, 
  356.              (XtCallbackProc) bn_menu_ff_PROC, NULL);
  357.  
  358.        button = 
  359.        bn_basics_xCreateButtonItem("time_delay",bnmenubox, NULL, button);
  360.        XtAddCallback(button, XtNcallback, 
  361.              (XtCallbackProc) bn_menu_td_PROC, NULL);
  362.  
  363.        button = bn_basics_xCreateButtonItem("art1",bnmenubox, NULL, button);
  364.        XtAddCallback(button, XtNcallback, 
  365.              (XtCallbackProc) bn_menu_art1_PROC, NULL);
  366.  
  367.        button = bn_basics_xCreateButtonItem("art2",bnmenubox, NULL, button);
  368.        XtAddCallback(button, XtNcallback, 
  369.              (XtCallbackProc) bn_menu_art2_PROC, NULL);
  370.  
  371.        button = bn_basics_xCreateButtonItem("artmap",bnmenubox, NULL, button);
  372.        XtAddCallback(button, XtNcallback, 
  373.              (XtCallbackProc) bn_menu_artmap_PROC, NULL);
  374.  
  375.        button = bn_basics_xCreateButtonItem("kohonen",bnmenubox, NULL, button);
  376.        XtAddCallback(button, XtNcallback, 
  377.              (XtCallbackProc) bn_menu_kohonen_PROC, NULL);
  378.  
  379.        button = bn_basics_xCreateButtonItem("jordan",bnmenubox, NULL, button);
  380.        XtAddCallback(button, XtNcallback, 
  381.                      (XtCallbackProc) bn_menu_jordan_PROC, NULL) ;
  382.  
  383.        button = bn_basics_xCreateButtonItem("elman",bnmenubox, NULL, button) ;
  384.        XtAddCallback(button, XtNcallback, 
  385.                      (XtCallbackProc) bn_menu_elman_PROC, NULL) ;
  386.  
  387.        button = bn_basics_xCreateButtonItem("hopfield",bnmenubox, NULL, button);  
  388.        XtAddCallback(button, XtNcallback,
  389.                      (XtCallbackProc) bn_menu_bighop_PROC, NULL);
  390.  
  391.  
  392.        button = bn_basics_xCreateButtonItem("assoz",bnmenubox, NULL, button);  
  393.        XtAddCallback(button, XtNcallback,
  394.                      (XtCallbackProc) bn_menu_assoz_PROC, NULL);
  395.  
  396.       
  397.        button = bn_basics_xCreateButtonItem("cancel2",bnmenubox, NULL, button);
  398.        XtAddCallback(button, XtNcallback, 
  399.              (XtCallbackProc) bn_menu_cancel_PROC, NULL);
  400.  
  401.        ui_checkWindowPosition(baseWidget);
  402.        XtPopup (baseWidget, XtGrabNone);
  403.        ui_xDontResizeWidget(baseWidget); 
  404.  
  405.        bn_menu_open = 1;
  406.  
  407.    } else {
  408.  
  409.        ui_confirmOk("BigNet menu already loaded\n");
  410.  
  411.    } /*if*/
  412.  
  413. }
  414.